package cn.edu.ctbu.datajpa01.service;


import cn.edu.ctbu.datajpa01.domain.Student;
import cn.edu.ctbu.datajpa01.repository.StudentRepository;


import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;


import java.util.List;



@Service
public interface StudentService {



    List<Student> findAll();


    /**
     * 只分页的查询
     * @param pageable
     * @return
     */
    Page<Student> findAll(Pageable pageable);
    /*
     * 按id进行查询
     * @param id 主键，整数
     * @return
     * */
    Student findById(Integer id);

    /**
     * 分页，带过滤的查询
     *
     * @param pageable
     * @return
     */

    public Page<Student> findAll(Example<Student> student,Pageable pageable);


    /*
     * 按名字进行查询，Like
     * @param id 主键，整数
     * @return
     * */
    List<Student> findByName(String name);

    /*
     * 按工号查询
     * @param num
     * @return
     * */
//    public String[] findByFirstFourNum(){
//
//        String[] firstFourNum = new String[studentRepository.findAll().size()];
//        for (int i = 0; i < studentRepository.findAll().size(); i++){
//            firstFourNum[i] = String.valueOf(studentRepository.findAll().get(i).getNum()).substring(0,4);
//        }
//        return firstFourNum;
//    }
//    public int[] max(){
//        int[] max = new int[studentRepository.findAll().size()];
//        for (int i = 0; i < studentRepository.findAll().size(); i++){
//            max[i] = Integer.parseInt(String.valueOf(findByFirstFourNum()[i]));
//        }
//        bubbleSort(max);
//        return max;
//    }
//
//    public static void bubbleSort(int[] arr){
//        int n = arr.length;
//        for (int i = 0;i < n - 1;i++){
//            for (int j = 0;j < n - i - 1;j++){
//                if (arr[j] > arr[j + 1]){
//                    int temp = arr[j];
//                    arr[j] = arr[j + 1];
//                    arr[j + 1] = temp;
//                }
//            }
//        }
//    }
    Student insert(Student student);

    Student update(Student student);

    void delete(Student student);

    void delete(Integer id);


    Student getById(Integer id);

    /**
     * 验证用户名和密码，如果通过，返回读取到的学生
     * @param num
     * @param password
     */
    public Student validateUsernameAndPassword(String num,String password) throws Exception;



    /*
    通过Num和password查询
    */
    List<Student> findByNumAndPassword(String num,String password);
}
